#include<stdio.h>
#include<string.h>
#define OK 1
#define Maxsize 10   
typedef struct   
{
	int i,j;
	int v;
 }SPNode;
 typedef struct  
 {
 	SPNode data[Maxsize];
 	int m,n,t;  
  }SPMatrix;
  void InitSPNode(SPMatrix *a) 
  
  {
  	int i,j,k,val,maxrow,maxcol;
	 maxrow=0;
	 maxcol=0;
	 i=j=0;
	 k=0;
	 while(i!=-1&&j!=-1)   
	 {
	 	printf("输入（行 列 值）：");
		scanf("%d %d %d",&i,&j,&val);
		a->data[k].i=i;
		a->data[k].j=j;
		a->data[k].v=val;
		if(maxrow<i)maxrow=i;
	    if(maxcol<j)maxcol=j;
	    k++;
	  } 
	  a->m=maxrow;a->n=maxcol;a->t=k-1;
   } 
   void showMatrix(SPMatrix *a)   
   	int p,q;
   	int t=0;
   	for(p=0;p<=a->m;p++)
   	{for(q=0;q<=a->n;q++)
   	  { if(a->data[t].i==p&&a->data[t].j==q)
   	    { printf("%d ",a->data[t].v);
   	       t++;
		} 
		else printf("0 ");
	  }
	  printf("\n");
	}
  }
  void TransposeSMatrix(SPMatrix *a,SPMatrix *b)  
  {
  	int q,col,p;
	  b->m=a->n;b->n=a->m; b->t=a->t;
	  if(b->t)
	  {
	  	q=0;
	  	for(col=0;col<=a->n;++col)  
		  for(p=0;p<a->t;++p)     
		   {
		   	  b->data[q].i=a->data[p].j;
		   	  b->data[q].j=a->data[p].i;
		   	  b->data[q].v=a->data[p].v;
		   	  ++q;
			} 
	  }
   } 
   void main(void)
   {
   	SPMatrix a,b;
   	printf("\n  结束请输入（-1，-1，-1）\n");
   	InitSPNode(&a);
   	printf("输入矩阵为：\n");
   	showMatrix(&a);    
	TransposeSMatrix(&a,&b);
	printf("输出矩阵为：\n");
	showMatrix(&b);    
   }